home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / lib / byobu / ec2_cost < prev    next >
Text File  |  2009-10-11  |  3KB  |  86 lines

  1. #!/bin/sh
  2. #
  3. #    ec2_cost: approximate EC2 cost (USD) of the current instance
  4. #    Copyright (C) 2008 Canonical Ltd.
  5. #
  6. #    Authors: Dustin Kirkland <kirkland@canonical.com>
  7. #
  8. #    This program is free software: you can redistribute it and/or modify
  9. #    it under the terms of the GNU General Public License as published by
  10. #    the Free Software Foundation, version 3 of the License.
  11. #
  12. #    This program is distributed in the hope that it will be useful,
  13. #    but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. #    GNU General Public License for more details.
  16. #
  17. #    You should have received a copy of the GNU General Public License
  18. #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  19.  
  20. DETAIL=0
  21. PKG="byobu"
  22.  
  23. for arg in $@; do
  24.     case "$arg" in
  25.         -d|--detail)
  26.             DETAIL=1
  27.         ;;
  28.     esac
  29. done
  30.  
  31. # Approximate Instance Cost Basis
  32. #            US        Europe
  33. # Small  (1cpu, 32bit)    $0.10/h        $0.11/h
  34. # Medium (2cpu, 32bit)    $0.20/h        $0.22/h
  35. # Large  (4cpu, 64bit)    $0.40/h        $0.44/h
  36. # XLarge (8cpu, 64bit)    $0.80/h        $0.88/h
  37.  
  38. # Count CPUs
  39. cpu_count=`grep -c "^processor.*:" /proc/cpuinfo`
  40. [ -z "$cpu_count" ] && cpu_count=1
  41. # Apply the going rate
  42. CPU_RATE=`echo "$cpu_count" | awk '{printf "%f", 0.10*$1}'`
  43. # BUG: Some logic needed here to add 10% cost for Europe instances?
  44.  
  45. # Data Transfer Cost Basis
  46. # Incoming    $0.10/GB
  47. # Outgoing    $0.17/GB
  48. # (This gets more complex if you use >1TB/mo)
  49. RX_RATE="0.10"
  50. TX_RATE="0.17"
  51.  
  52. # Auto detect network interface
  53. IF=`tail -n1 /proc/net/route  | awk '{print $1}'`
  54.  
  55. ifconfig_out=`/sbin/ifconfig "$IF"`
  56.  
  57. # Calculate bandwidth cost
  58. tx_gb=`echo "$ifconfig_out" | grep "TX bytes:" | sed "s/^.*TX bytes://" | awk '{ printf "%f", $1 / 1024 / 1024 / 1024 }'`
  59. rx_gb=`echo "$ifconfig_out" | grep "RX bytes:" | sed "s/^.*RX bytes://" | awk '{ printf "%f", $1 / 1024 / 1024 / 1024 }'`
  60. network_cost=`echo "$tx_gb" "$TX_RATE" "$rx_gb" "$RX_RATE" | awk '{printf "%f %f", $1*$2, $3*$4}' | awk '{printf "%f", $1 + $2}'`
  61.  
  62. # Calculate uptime cost
  63. # BUG: This will only calculate uptime since boot!
  64. #      Some additional input will be required to account for reboots!!!
  65. hours=`awk '{printf "%f", 1 + $1 / 60 / 60 }' /proc/uptime | sed 's/\..*$//' `
  66. uptime_cost=`echo "$hours" | awk "{printf \"%f\", "$CPU_RATE" * $hours}"`
  67. total_cost=`echo "$network_cost" "$uptime_cost" | awk '{printf "%.2f", $1 + $2}'`
  68.  
  69. if [ "$DETAIL" = "1" ]; then
  70.     echo "================================================"
  71.     echo "Estimated cost in Amazon's EC2 since last reboot"
  72.     echo "================================================"
  73.     echo "  Network sent:  $tx_gb GB   @ \$$RX_RATE/GB"
  74.     echo "  Network recv:  $rx_gb GB   @ \$$TX_RATE/GB"
  75.     echo "  Network cost:  \$$network_cost"
  76.     echo "------------------------------------------------"
  77.     echo "  Uptime:        $hours hr  @ \$$CPU_RATE/hr"
  78.     echo "  Uptime cost:   \$$uptime_cost"
  79.     echo "------------------------------------------------"
  80.     echo "Total cost:      ~\$$total_cost"
  81.     echo "================================================"
  82.     exit 0
  83. fi
  84.  
  85. printf "\005{= KG}~\$\005{-}\005{=b KG}%s\005{-} " $total_cost
  86.